/**
 * 功能：
 * 	使视图与相关事件相分离
 *  类似于action 用来传递数据和控制视图
 *  quicktips 没有完成
 *  
 *  handler 事件需要重新改变量
 */
Ext.define('Risk.controller.ra.RaController',{
	extend : 'Ext.app.Controller',
	 stores:[
	 	'ra.LtStore'
	 ],
	 models:[
	 	'RAModel'
	 ],
	      
	      /**
	       * 视图在congtroller中进行注册
	       * 将控制权转交给 this Controller
	       */
	  	  //管理的视图
     views: [
             'ra.Ad',
             'ra.Cd',
             'ra.Pa',
             'ra.ra',
             'ra.Lt',
             'ra.RAResult',
             'RAPanel'
    ],
    // 类创建好后要做的初始化工作
	init : function() {
	  this.control({
		  //类似于JQuery中的选择器   fieldLabel
	  	 'adfieldSet > radiogroup':{
			  change: this.changeHandler,
			  //初始化ra
			  render: this.initAd
		  },
		   'adfieldSet > textfield':{
			  change: this.handlerTextChange
		  },
		   'adfieldSet  textfield':{
			  change: this.handlerTextChange
		  },
		  'cdfieldSet > radiogroup':{
			  render: this.initCd,
			  change: this.handlerCdEvent
		  },
		  'pafieldSet > checkboxgroup':{
			  render: this.initPa,
			  change:this.handlerPaEvent
			  
		  },
		  'rafieldSet > radiogroup':{
			  render: this.initRA,
			  change:this.handlerRAEvent
			  
		  },
		  'ltfieldSet > radiogroup':{
			  render: this.initLT,
			  change:this.handlerLTEvent
		  },
		   'ltfieldSet > fieldcontainer > textfield':{
			  change:this.handlerLTTextFiledEvent
		  },
		   'ltfieldSet > combo ':{
			  change:this.handlerLTTextFiledEvent
		  }/*,
		  'resultfieldSet  button[action=calculate] ':{
			  click:this.handlerCalculateEvent
		  },*/
		  /*'resultfieldSet  button[action=save] ':{
			  click:this.handlerSaveEvnet
		  }*/
		  
	  });
	},
	initLT:function(obj)
	{
		 obj.up('ltfieldSet').down('combo').setDisabled(true);
		
		//提示消息
		var tooltips = [{
          target: 'LT_TIP1',
          title: '确定np、nt、tp的值',
          html: '通过输入np、nt、tp的值来计算接触跨步电压导致伤害的损失率【Lt】。',
          trackMouse: true
        },
        {
          	target: 'LT_TIP2',
            title: '不能或很难确定np、nt、tp',
            html: '当不能确定容易获取计算参数时，采用典型的【Lt】值进行计算。'
        },
         {
          	target: 'LT_TIP3',
            title: '可能受危害的人数',
            html: '用于计算【Lt】,单位： 人'
        },
         {
          	target: 'LT_TIP4',
            title: '预期总人数【建筑物内】',
            html: '用于计算【Lt】,单位： 人'
        },
        {
          	target: 'LT_TIP5',
            title: '可能受危害的人平均处于建筑物内的时间',
            html: '用于计算【Lt】,单位： 小时。'
        },
        {
          	target: 'LT_TIP6',
            title: 'Lt典型值',
            html: '对应所有的类型：<br>人员处于建筑物内：【Lt = 0.00001】<br>人员处于建筑物外：【Lt = 0.001】'
        }];
        
       	Ext.each(tooltips, function(config) {
       		Ext.create('Ext.tip.ToolTip', config);
    	});  

    	Ext.QuickTips.init();
		
	},
	initRA:function(obj)
	{
		//提示消息
		var tooltips = [{
          target: 'ra_TIP1',
          title: '缩减因子1',
          html: '用于计算直接雷击建筑物导致的人畜伤害损失率【La】。',
          trackMouse: true
        },
        {
          	target: 'ra_TIP2',
            title: '缩减因子2',
            html: '用于计算直接雷击建筑物导致的人畜伤害损失率【La】'
        },
         {
          	target: 'ra_TIP3',
            title: '缩减因子3',
            html: '用于计算直接雷击建筑物导致的人畜伤害损失率【La】'
        },
         {
          	target: 'ra_TIP4',
            title: '缩减因子4',
            html: '用于计算直接雷击建筑物导致的人畜伤害损失率【La】'
        }];
        
       	Ext.each(tooltips, function(config) {
       		Ext.create('Ext.tip.ToolTip', config);
    	});  

    	Ext.QuickTips.init();
		
	},
	initPa:function(obj)
	{
		//提示消息
		var tooltips = [{
          target: 'PA_TIP1',
          title: '保护措施1',
          html: '用于计算雷击建筑物因接触和跨步电压导致的人畜伤害概率【Pa】,当采取多项时结果为每项值得积。',
          trackMouse: true
        },
        {
          	target: 'PA_TIP2',
            title: '保护措施2',
            html: '用于计算雷击建筑物因接触和跨步电压导致的人畜伤害概率【Pa】,当采取多项时结果为每项值得积。<br><font size=1 color=red>(例如，采用至少3mm厚的交链聚乙烯绝缘)</font>'
        },
         {
          	target: 'PA_TIP3',
            title: '保护措施3',
            html: '用于计算雷击建筑物因接触和跨步电压导致的人畜伤害概率【Pa】,当采取多项时结果为每项值得积。'
        },
         {
          	target: 'PA_TIP4',
            title: '保护措施4',
            html: '用于计算雷击建筑物因接触和跨步电压导致的人畜伤害概率【Pa】,当采取多项时结果为每项值得积。'
        }];
        
       	Ext.each(tooltips, function(config) {
       		Ext.create('Ext.tip.ToolTip', config);
    	});  

    	Ext.QuickTips.init();
		
	},
	initCd:function(obj)//Cd 位置因子的提示信息
	{
		//提示消息
		var tooltips = [{
          target: 'CD_TIP1',
          title: '位置因子1',
          html: '用于计算建筑物雷击年平均危险系数【Nd】',
          trackMouse: true
        },
        {
          	target: 'CD_TIP2',
            title: '位置因子2',
            html: '用于计算建筑物雷击年平均危险系数【Nd】'
        },
         {
          	target: 'CD_TIP3',
            title: '位置因子3',
            html: '用于计算建筑物雷击年平均危险系数【Nd】'
        },
         {
          	target: 'CD_TIP4',
            title: '位置因子4',
            html: '用于计算建筑物雷击年平均危险系数【Nd】'
        }];
        
        Ext.each(tooltips, function(config) {
       		Ext.create('Ext.tip.ToolTip', config);
    	});  

    	Ext.QuickTips.init();
        
	},
	initAd:function(obj)//为Ad添加提示信息
	{
		var obj1 = obj.ownerCt.items.get(1);
		var obj2= obj.ownerCt.items.get(3);
		obj1.setDisabled(false);
		obj2.setDisabled(true);
		
		//提示消息
		var tooltips = [{
          target: 'AD_TIP1',
          title: '规则建筑物',
          width: 200,
          html: '通过输入建筑物的长宽高来计算建筑物截收面积【Ad】',
          trackMouse: true
        },
        {
          	target: 'AD_TIP2',
          	width: 200,
            title: '不规则建筑物',
            html: '直接输入建筑物的截面积【Ad】'
        },
         {
         	width: 200,
          	target: 'AD_TIP3',
            title: '建筑物长【L】',
            html: '用于计算规则建筑物【Ad】， 单位:米'
        },
         {
         	width: 200,
          	target: 'AD_TIP4',
            title: '建筑物宽度【W】',
            html: '用于计算规则建筑物【Ad】， 单位:米'
        },
         {
         	width: 200,
          	target: 'AD_TIP5',
            title: '建筑物高度【H】',
            html: '用于计算规则建筑物【Ad】， 单位:米'
        },
         {
         	width: 200,
         	target: 'AD_TIP6',
            title: '建筑物截收面积',
            html: '用于直接计算建筑物雷击年平均危险系数【Nd】,单位：平方米'
        }];
        
        
       	Ext.each(tooltips, function(config) {
       		Ext.create('Ext.tip.ToolTip', config);
    	});  

    	Ext.QuickTips.init();
    	
	},
	changeHandler:function(obj,  newValue,  oldValue,  eOpts )//处理radio 事件
	{
//		console.log('this is in Ra controller!');
		var temp = 0;
		for(o in newValue)
		{
			temp = newValue[o];
		}
		var obj1 = obj.ownerCt.items.get(1);
		var obj2= obj.ownerCt.items.get(3);
		var obj3 = obj.ownerCt.items.get(4);
		//TODO 需要修改的地方
		if(temp==0)
		{
			obj1.setDisabled(true);
			obj2.setDisabled(false);
			obj3.setDisabled(false);
		}else
		{
			obj1.setDisabled(false);
			obj2.setDisabled(true);
			obj3.setDisabled(true);
		}
		
	
	},
	handlerPaEvent:function(obj,  newValue,  oldValue,  eOpts )
	{
		var result = 1;
		var temp = 0;
		//需要修改
		for(var o in newValue)
		{
			 temp = newValue[o];
		}
		
		if(temp !=undefined && 'object'==typeof temp)
		{
			for(var i = 0; i < temp.length;i++)
			{
				result*= temp[i];
			}
		}else if(temp !=undefined)
		{
			result = temp;
		}
		
		obj.up('pafieldSet').down("textfield").setValue(result);
//		console.log(result.toFixed(6));
	},
	handlerRAEvent:function(obj,  newValue,  oldValue,  eOpts )
	{
		var result = "";
		for(var x in newValue)
		{
			result = newValue[x];
		}
		obj.up('rafieldSet').down("textfield").setValue(result);
	},
	handlerLTEvent:function(obj,  newValue,  oldValue,  eOpts )
	{
		//TODO 需要修改的地方
		var temp = 0;
		for(var i in newValue)
		{
			temp = newValue[i];
		}
		obj.up('ltfieldSet').down("combo").setDisabled(!(temp==0));
		obj.up('ltfieldSet').down("#LT").setDisabled(temp==0);
		obj.up('maintab').down('rbpanel').down('lffieldSet').down('#ck').setValue(!(temp==0));
		obj.up('maintab').down('rcpanel').down('lcfieldset').down('#ck').setValue(!(temp==0));
		obj.up('maintab').down('rcpanel').down('lc2fieldset').down('#ck').setValue(!(temp==0));
	},
	handlerLTTextFiledEvent:function(obj)//处理文本框改变事件
	{
		var result=0;
		if(obj.id=='LT_TIP6')
		{
			 result = obj.value;
		}else
		{
			var temp = obj.up('fieldcontainer').items;	
			var np = parseFloat(temp.get(0).value);
			var nt = parseFloat(temp.get(1).value);
			var tp = parseFloat(temp.get(2).value);
			 result = (np/(nt+0.0)*(tp/8760.0));
		}
		
		obj.up('ltfieldSet').down('#lt').setValue(result);
//		console.log(result);
	},
	handlerCdEvent:function(obj,  newValue,  oldValue,  eOpts)
	{
		var result = "";
		for(var x in newValue)
		{
			result = newValue[x];
		}
		obj.up('cdfieldSet').down("textfield").setValue(result);
	},
	//Ad种用于计算ad的方法
	handlerTextChange:function(obj)
	{
		var owner = obj.up('adfieldSet');
		var opt = owner.down('radiogroup').getValue( );
		var area = 1;
		//判断是何种取值方式
		for(var x in opt)
		{
		 opt = opt[x];
		}
		if(opt ==1)
		{
			var h = Ext.getCmp('AD_TIP5').value;
			var w = Ext.getCmp('AD_TIP4').value;
			var l= Ext.getCmp('AD_TIP3').value;
			
			area = l*w+6*h*(l+w)+9*3.1415*h*h;
		}else
		{
			area = Ext.getCmp('AD_TIP6').value ;
		}
		
		owner.down('#area').setValue(area);
		//console.log(area);
	}
	
	
});